package com.fiap.to;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrePersist;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name = "AM_OS")
public class OrdemServicoTO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GenericGenerator(name = "seq_os", strategy = "increment")
	@GeneratedValue(generator = "seq_os")
	@Column(name = "ID_OS")
	private int id_os;
	@OneToOne
	@JoinColumn(name = "ID_COLABORADOR")
	private ColaboradorTO atendente;
	@OneToOne
	@JoinColumn(name = "ID_VEICULO")
	private VeiculoTO veiculo;
	@Column(length = 200)
	private String descricao;
	@Column(length = 45)
	private String indicacao;
	@OneToMany(cascade=CascadeType.PERSIST)
	@JoinColumn(name="ID_PECA")
	private List<PecaOsTO> pecas;
	@Column(columnDefinition = "NUMBER", length = 10)
	private int kmInicio;
	@OneToMany(cascade=CascadeType.PERSIST)
	@JoinColumn(name="ID_SERVICO")
	private List<ServicoTO> servicos;
	@Column(length = 8, precision = 2)
	private int vlTotal;

	@PrePersist
	private void executaAntesDePersistir() {
		System.out.println("Persistindo...");
	}

	/**
	 * 
	 */
	public OrdemServicoTO() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param id_os
	 * @param atendente
	 * @param veiculo
	 * @param descricao
	 * @param indicacao
	 * @param pecas
	 * @param kmInicio
	 * @param servicos
	 * @param vlTotal
	 */
	public OrdemServicoTO(int id_os, ColaboradorTO atendente,
			VeiculoTO veiculo, String descricao, String indicacao,
			List<PecaOsTO> pecas, int kmInicio,
			List<ServicoTO> servicos, int vlTotal) {
		super();
		this.id_os = id_os;
		this.atendente = atendente;
		this.veiculo = veiculo;
		this.descricao = descricao;
		this.indicacao = indicacao;
		this.pecas = pecas;
		this.kmInicio = kmInicio;
		this.servicos = servicos;
		this.vlTotal = vlTotal;
	}

	public int getId_os() {
		return id_os;
	}

	public void setId_os(int id_os) {
		this.id_os = id_os;
	}

	public ColaboradorTO getAtendente() {
		return atendente;
	}

	public void setAtendente(ColaboradorTO atendente) {
		this.atendente = atendente;
	}

	public VeiculoTO getVeiculo() {
		return veiculo;
	}

	public void setVeiculo(VeiculoTO veiculo) {
		this.veiculo = veiculo;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getIndicacao() {
		return indicacao;
	}

	public void setIndicacao(String indicacao) {
		this.indicacao = indicacao;
	}

	public List<PecaOsTO> getPecas() {
		return pecas;
	}

	public void setPecas(List<PecaOsTO> pecas) {
		this.pecas = pecas;
	}

	public int getKmInicio() {
		return kmInicio;
	}

	public void setKmInicio(int kmInicio) {
		this.kmInicio = kmInicio;
	}

	public List<ServicoTO> getServicos() {
		return servicos;
	}

	public void setServicos(List<ServicoTO> servicos) {
		this.servicos = servicos;
	}

	public int getVlTotal() {
		return vlTotal;
	}

	public void setVlTotal(int vlTotal) {
		this.vlTotal = vlTotal;
	}

}
